{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.model_selection import cross_val_score\n",
    "\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.ensemble import VotingClassifier\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.ensemble import BaggingClassifier,BaggingRegressor"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# bagging"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 实验数据\n",
    "\n",
    "from sklearn.datasets import load_breast_cancer\n",
    "\n",
    "bc = load_breast_cancer()\n",
    "y = bc.target\n",
    "X = pd.DataFrame.from_records(data=bc.data, columns=bc.feature_names)\n",
    "\n",
    "# 转化为df\n",
    "df = X\n",
    "df['target'] = y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 只取前2个特征\n",
    "cols = [\n",
    "    'mean radius','mean texture',\n",
    "]\n",
    "X_train, X_test, y_train, y_test = train_test_split(X[cols],\n",
    "                                                    y,\n",
    "                                                    test_size=0.2,\n",
    "                                                    random_state=42,\n",
    "                                                    stratify=y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "tree = DecisionTreeClassifier(max_depth=None, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "bag = BaggingClassifier(base_estimator=tree,\n",
    "                        n_estimators=200,\n",
    "                        max_samples=0.9,\n",
    "                        max_features=1.0,\n",
    "                        bootstrap=True,\n",
    "                        bootstrap_features=False,\n",
    "                        n_jobs=1,\n",
    "                        random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Decision tree train/test accuracy: 1.000/0.781\n"
     ]
    }
   ],
   "source": [
    "\n",
    "tree.fit(X_train, y_train)\n",
    "y_train_pred = tree.predict(X_train)\n",
    "y_test_pred = tree.predict(X_test)\n",
    "\n",
    "acc_train = accuracy_score(y_train, y_train_pred)\n",
    "acc_test = accuracy_score(y_test, y_test_pred)\n",
    "print('Decision tree train/test accuracy: {:.3f}/{:.3f}'.format(\n",
    "    acc_train, acc_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bagging tree train/test accuracy: 1.000/0.860\n"
     ]
    }
   ],
   "source": [
    "bag.fit(X_train, y_train)\n",
    "y_train_pred = bag.predict(X_train)\n",
    "y_test_pred = bag.predict(X_test)\n",
    "\n",
    "acc_train = accuracy_score(y_train, y_train_pred)\n",
    "acc_test = accuracy_score(y_test, y_test_pred)\n",
    "print('Bagging tree train/test accuracy: {:.3f}/{:.3f}'.format(\n",
    "    acc_train, acc_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import make_classification\n",
    "Xt, yt = make_classification(n_samples=1000,\n",
    "                           n_features=7,\n",
    "                           n_redundant=1,\n",
    "                           n_informative=6,\n",
    "                           n_clusters_per_class=3,\n",
    "                           n_classes=2,\n",
    "                           random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf_lr = LogisticRegression(solver='liblinear',\n",
    "                            random_state=42,C=10)  #class_weight=\"balanced\",1e9\n",
    "\n",
    "bag = BaggingClassifier(base_estimator=clf_lr,\n",
    "                        n_estimators=200,\n",
    "                        max_samples=0.5,\n",
    "                        #max_features=1,\n",
    "                        random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC:0.84 (+/- 0.031) [Logistic]\n",
      "AUC:0.84 (+/- 0.031) [Bagging Logistic]\n"
     ]
    }
   ],
   "source": [
    "for clf, label in zip([clf_lr, bag], ['Logistic','Bagging Logistic']):\n",
    "    scores = cross_val_score(estimator=clf,\n",
    "                             X=Xt,\n",
    "                             y=yt,\n",
    "                             cv=10,\n",
    "                             scoring='roc_auc')\n",
    "    print(\"AUC:{:.2} (+/- {:.2}) [{}]\".format(scores.mean(), scores.std(),\n",
    "                                              label))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# boosting"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## gbdt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "np.random.seed(42)\n",
    "\n",
    "n = 150\n",
    "X = np.linspace(-1, 1, n)\n",
    "y = X**2 + np.random.normal(loc=0, scale=0.1, size=n)\n",
    "X = X.reshape(-1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X, y, alpha=0.7)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.tree import DecisionTreeRegressor\n",
    "\n",
    "dtr1 = DecisionTreeRegressor(max_depth=3)\n",
    "dtr1.fit(X, y)\n",
    "\n",
    "plt.figure()\n",
    "plt.scatter(X, y, alpha=0.7)\n",
    "plt.plot(X, dtr1.predict(X), 'r', label='F_0')\n",
    "plt.legend(loc=3)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "y2 = y - dtr1.predict(X)\n",
    "dtr2 = DecisionTreeRegressor(max_depth=2)\n",
    "dtr2.fit(X, y2)\n",
    "\n",
    "plt.scatter(X, y2, alpha=0.7)\n",
    "plt.plot(X, dtr2.predict(X), 'r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "F_0 = dtr1.predict(X)\n",
    "f_1 = dtr2.predict(X)\n",
    "\n",
    "F_1 = F_0 + f_1\n",
    "plt.scatter(X, y, alpha=0.7)\n",
    "plt.plot(X, F_0, 'r', label='F_0')\n",
    "plt.plot(X, F_1, 'b', label='F_1', alpha=0.8)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y3 = y2 - dtr2.predict(X)\n",
    "dtr3 = DecisionTreeRegressor(max_depth=2)\n",
    "dtr3.fit(X, y3)\n",
    "\n",
    "f_2 = dtr3.predict(X)\n",
    "F_2 = F_0 + f_1 + f_2\n",
    "\n",
    "plt.scatter(X, y, alpha=0.7)\n",
    "plt.plot(X, F_0, 'r', label='F_0')\n",
    "plt.plot(X, F_1, 'b', label='F_1')\n",
    "plt.plot(X, F_2, 'm', label='F_2', alpha=0.8)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GradientBoostingRegressor(alpha=0.9, ccp_alpha=0.0, criterion='friedman_mse',\n",
       "                          init=None, learning_rate=1, loss='ls', max_depth=2,\n",
       "                          max_features=None, max_leaf_nodes=None,\n",
       "                          min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "                          min_samples_leaf=1, min_samples_split=2,\n",
       "                          min_weight_fraction_leaf=0.0, n_estimators=3,\n",
       "                          n_iter_no_change=None, presort='deprecated',\n",
       "                          random_state=None, subsample=1.0, tol=0.0001,\n",
       "                          validation_fraction=0.1, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import GradientBoostingRegressor\n",
    "gb = GradientBoostingRegressor(max_depth=2, n_estimators=3, learning_rate=1)\n",
    "gb.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.scatter(X, y, alpha=0.7)\n",
    "plt.plot(X, gb.predict(X), 'r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## boosting解析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 同bagging 一样的例子\n",
    "import numpy as np\n",
    "np.random.seed(42)\n",
    "# 构造500个数据点\n",
    "n = 500\n",
    "X = np.array([i / n for i in range(n + 1)])\n",
    "# 构造一个包含方差为 0.01 的噪音数据\n",
    "y = np.array([i + np.random.normal(scale=0.1) for i in X])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,\n",
    "                                                    y,\n",
    "                                                    test_size=0.3,\n",
    "                                                    random_state=42)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GradientBoostingRegressor(alpha=0.9, ccp_alpha=0.0, criterion='friedman_mse',\n",
       "                          init=None, learning_rate=0.5, loss='ls', max_depth=1,\n",
       "                          max_features=None, max_leaf_nodes=None,\n",
       "                          min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "                          min_samples_leaf=1, min_samples_split=2,\n",
       "                          min_weight_fraction_leaf=0.0, n_estimators=50,\n",
       "                          n_iter_no_change=None, presort='deprecated',\n",
       "                          random_state=None, subsample=1.0, tol=0.0001,\n",
       "                          validation_fraction=0.1, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import GradientBoostingRegressor\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "# Fit regression model\n",
    "params = {\n",
    "    'n_estimators': 50,\n",
    "    'max_depth': 1,\n",
    "    'learning_rate': 0.5,\n",
    "    'loss': 'ls'\n",
    "}\n",
    "clf = GradientBoostingRegressor(**params)\n",
    "clf.fit(X_train.reshape(-1, 1), y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Fit regression model\n",
    "params = {\n",
    "    'n_estimators': 50,\n",
    "    'max_depth': 1,\n",
    "    'learning_rate': 0.5,# 'learning_rate': 1, 有过拟合的倾向，train-test 的mse差异比较大\n",
    "    'loss': 'ls'\n",
    "}\n",
    "clf = GradientBoostingRegressor(**params)\n",
    "clf.fit(X_train.reshape(-1, 1), y_train)\n",
    "\n",
    "\n",
    "mse = np.zeros((params['n_estimators'], ), dtype=np.float64)\n",
    "\n",
    "for i, y_pred in enumerate(clf.staged_predict(X_test.reshape(-1, 1))):\n",
    "    mse[i] = mean_squared_error(y_test, y_pred)\n",
    "    \n",
    "mse_train = np.zeros((params['n_estimators'], ), dtype=np.float64)\n",
    "\n",
    "for i, y_pred in enumerate(clf.staged_predict(X_train.reshape(-1, 1))):\n",
    "    mse_train[i] = mean_squared_error(y_train, y_pred)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'MSE')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWkAAAE9CAYAAADJZJOvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAtTUlEQVR4nO3deXwV9b3/8dcnCwRIBEFwISLBlaAYSkRxuaL9uYJiXSouvVhbrVZrtdcq2ofLbV1qub/r1da2V2+9WmzFXltbWq1LqxTb8rNC3XBHpBcQBREjCCELn98f35nk5ORkgeTkTE7ez8djHmfOnDlzvhPC+3zznZnPmLsjIiLJVJDrBoiISNsU0iIiCaaQFhFJMIW0iEiCKaRFRBJMIS0ikmBFuW5Ad9lpp5189OjRuW6GiMh2Wbx48YfuPjx9ed6E9OjRo1m0aFGumyEisl3M7B+Zlmu4Q0QkwRTSIiIJppAWEUmwvBmTFskn9fX1rFy5ktra2lw3RbpZSUkJ5eXlFBcXd2p9hbRIAq1cuZKysjJGjx6NmeW6OdJN3J1169axcuVKKioqOvUeDXeIJFBtbS3Dhg1TQOcZM2PYsGHb9BeSQlokoRTQ+Wlb/10V0iLSyrp166iqqqKqqopddtmFkSNHNj2vq6tr972LFi3isssu6/AzDj300G5p66ZNmzjnnHM44IAD2H///Tn88MPZuHFju++55ZZb2nxt9OjRHHHEES2WVVVVsf/++3f4eYWFhU0/p6qqKr773e92ce80Ji0iGQwbNowXX3wRgBtvvJHS0lKuvPLKptcbGhooKsocH9XV1VRXV3f4GX/961+7pa133HEHO++8M6+88goAb775ZocH5W655RauvfbaNl/fsGEDK1asYPfdd+f111/v9OcNGDCg6efWXfp2T/rPf4Y5c3LdCpFe4bzzzuOiiy7i4IMP5qqrruJvf/sbkydPZsKECRx66KG8+eabAMyfP59p06YBIeDPP/98pkyZwpgxY7jzzjubtldaWtq0/pQpUzj99NPZb7/9OOecc4jvGPXYY4+x3377MXHiRC677LKm7aZavXo1I0eObHq+77770r9/fwAeeOABJk2aRFVVFV/5yldobGxk1qxZbN68maqqKs4555yM+/r5z3+ehx56CIAHH3yQs846q1OflxXunhfTxIkTfZtdfLH78OHb/j6RLHvttddy3YQmN9xwg8+ePdtnzpzpU6dO9YaGBnd3r6mp8fr6end3f+qpp/zUU091d/dnnnnGp06d2vTeyZMne21tra9du9aHDh3qdXV17u4+aNCgpvV32GEHX7FihTc2Nvohhxzizz77rG/evNnLy8t92bJl7u4+Y8aMpu2meuGFF3z48OF+yCGH+Le+9S1/66233D38DKdNm9b0eRdffLHff//9LT47kz322MPfeOMNnzx5sru7V1VV+auvvurjxo1r9/Pc3QsKCvzAAw9smubOnZvxMzL9+wKLPEO29e3hjrIy2LAh160Qadfll0M3/wVNVRX8x39s+/vOOOMMCgsLAaipqWHmzJm8/fbbmBn19fUZ3zN16lT69+9P//79GTFiBB988AHl5eUt1pk0aVLTsqqqKpYvX05paSljxoxpOlXtrLPO4u67786wL1UsW7aMJ598kj/84Q8cdNBBLFy4kD/+8Y8sXryYgw46CIDNmzczYsSITu3nsGHD2HHHHZk7dy5jx45l4MCBHX7e2LFjszLc0bdDurQUamuhoQHaGF8TkWaDBg1qmr/uuus46qijeOSRR1i+fDlTpkzJ+J7UoYDCwkIaGhq2a532lJaWcuqpp3LqqadSUFDAY489Rr9+/Zg5cya33nrrNm0rduaZZ3LJJZdw3333derzxo4du12f05G+nUxlZeFx40YYMiSnTRFpy/b0eHtCTU1N09hspiDrqn333Zdly5axfPlyRo8e3TRGnO4vf/kLlZWV7LjjjtTV1fHaa68xZcoUKisrmT59OldccQUjRozgo48+YsOGDeyxxx4UFxdTX1/f7gHGz33uc6xevZrjjjuO9957r8PPy5a+feAwOnChIQ+RbXfVVVdxzTXXMGHChG3u+XbGgAED+OEPf8jxxx/PxIkTKSsrY/Dgwa3We+eddzjyyCM54IADmDBhAtXV1Zx22mlUVlZy0003ceyxxzJ+/HiOOeYYVq9eDcCFF17I+PHj2zxwCFBWVsbVV19Nv379OvV5QNMByXiaNWtWl38O5tFR1N6uurrat7me9EMPwYwZ8NprkKU/VUS2x+uvv561P597k40bN1JaWoq7c8kll7D33ntzxRVX5LpZXZbp39fMFrt7q3MX1ZMG9aRFEuqee+6hqqqKcePGUVNTw1e+8pVcN6nHaUwawpi0iCTOFVdckRc9567o2z3pOKTVkxaRhOrbIa3hDhFJuL4d0hruEJGE69shrZ60iCRc3w7pgQPBTD1pkTRdKVUKoWhSW1XuPvjgA6ZNm8aBBx5IZWUlJ554Yrvb+vjjj/nhD3/Y5utmxrnnntv0vKGhgeHDhzcVY2rr85YvX86AAQNanNf805/+tMN962l9++yOggIYNEg9aZE0HZUq7cj8+fMpLS3NWDP6+uuv55hjjuHrX/86AC+//HK724pD+qtf/WrG1wcNGsSSJUvYvHkzAwYM4KmnnmpRpa69z9tzzz27vdZGd+vbPWkI49LqSYt0aPHixRx55JFMnDiR4447runqvTvvvJPKykrGjx/PjBkzWL58OT/+8Y+5/fbbqaqq4tlnn22xndWrV7cosDR+/Pim+dmzZ3PQQQcxfvx4brjhBgBmzZrFO++8Q1VVFd/85jcztu3EE0/k0UcfBTKXFm3r83qFTKXxeuO0XaVK3d333tt9xozte69IliStVOn3vvc9nzx5sq9Zs8bd3efOnetf/OIX3d1911139draWnd3X79+fdN7Zs+enXF7jz/+uA8ePNinTJniN910k69atcrd3Z944gm/4IILfOvWrd7Y2OhTp071P/3pT/7uu+82lQnNZNCgQf7SSy/5aaed5ps3b/YDDzywRbnUtj7v3Xff9ZKSkhalRRcsWND1H1gnqFTptlC5Ukm6BNQq3bJlC0uWLOGYY44BoLGxkV133RWgqQbGKaecwimnnNLhto477jiWLVvG448/zu9//3smTJjAkiVLePLJJ3nyySeZMGECEC4Jf/vttxk1alSH2xw/fjzLly/nwQcfbDXG3dbnQe8Y7lBIa7hDpEPuzrhx41i4cGGr1x599FEWLFjAb3/7W26++eam20q1Z+jQoZx99tmcffbZTJs2jQULFuDuXHPNNa0u/V6+fHmn2njyySdz5ZVXMn/+fNatW9fh502cOLFT2801hXRpKURjayKJlIBapf3792ft2rUsXLiQyZMnU19fz1tvvcXYsWNZsWIFRx11FIcffjhz585l48aNlJWV8cknn2Tc1tNPP80hhxzCwIED2bBhA++88w6jRo2irKyM6667jnPOOYfS0lJWrVpFcXExZWVlbOjEX7vnn38+Q4YM4YADDmD+/Pkdfl5voZAuK4O33851K0QSraCggIcffpjLLruMmpoaGhoa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\n",
      "text/plain": [
       "<Figure size 864x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,5))\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.plot(np.arange(params['n_estimators']) + 1, mse_train, 'b-',\n",
    "         label='Training Set MSE')\n",
    "plt.plot(np.arange(params['n_estimators']) + 1, mse, 'r-',\n",
    "         label='Test Set MSE')\n",
    "plt.legend(loc='upper right')\n",
    "plt.xlabel('Boosting Iterations')\n",
    "plt.ylabel('MSE')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
